/**
 * Является родительским исключением в проекте.
 * Используется для перехвата исключений всех типов
 * (перехватываемых и неперехватываемых).
 */

#ifndef _THROWABLE_H
#define	_THROWABLE_H

#include <exception>
#include <string>

namespace etu {
namespace common {

class Throwable : public std::exception {
    std::string message;
public:
    Throwable(const char* _message) throw() { this->message = _message; }
    Throwable(const std::string _message) throw() { this->message = _message; }
    Throwable(const Throwable& orig) throw() { this->message = orig.message; }
    virtual ~Throwable() throw() {}
    virtual const char* what() const throw() { return this->message.c_str(); }
};

}
}

#endif	/* _THROWABLE_H */
